Migrace MySQL to FB - prvni dojmy

Otázka od: Martin Pisarik

12. 5. 2004 16:55

Ahoj *,

Tak jsem po obrovskem trapeni zacal s experimentovanim s FB. Mam nekolik
dotazu seradim je podle jejich zavaznosti.

1. Jak je to ve FB s SQL? Moje dotazy, ktere jsem pouzival v MySQL vubec ve
FB nefunguji a po upravach (zameny ruznych typu apostrofu atd.) se mi podari
je spustit tak vraci uplne jine vysledky. Je normalni aby mi INNER JOIN
vracel vic zaznamu nez LEFT JOIN!!?!! Nechapu to. INNER JOIN mi vrati cca
3000 zaznamu - dokonce spravne, LEFT JOIN vrati 0 zaznamu a RIGHT JOIN trva
strasne dlouho a nakonec vrati taky 0 zaznamu. Tak nevim. Je tohle SQL-92?

2. Nainstaloval jsem si FBServer 1.5 a chtel bych ne nej pristoupit pres FB
ODBC driver, ale pri nastavovani toho DSN mi to umozni tak akorat zadat
cestu k GDB souboru, ale to se mi nelibi, myslel jsem, ze pod slovem SQL
server si muzu predstavit neco jineho, tohle mi pripada spis jako souborova
databaze. Vubec nevim jak to budu jako nastavovat v LAN. To budu sdilet ten
soubor? Nebo delam neco spatne? co?

3. Existuje neco na prepumpovani dat z MySQL na FB? Ja jsem to resil hroznym
zpusobem pres Access, protoze FB neumi SQL, ktery produkuje MySQL.

Budu vdecny za nejake reakce, protoze to co ctu na webu se dost lisi od
situace na mym komplu. Zda se mi, ze FB je souborova databaze stejne jako
treba Access s tim roydilem, ze Access umi aspon trochu SQL. V cem je
problem?

P.S. je moc hezky, ze FB umi stored procedury, subselecty, triggery, ale me
by uplne stacilo, kdybych vedel jak udelat aby umel SELECT, UPDATE, JOIN,
CREATE...

Dik.

WinXP, FB 1.5


Odpovedá: Pavel Cisar

12. 5. 2004 17:34

Haj hou!

On 12 May 2004 at 17:45, Martin Pisarik wrote:

> 1. Jak je to ve FB s SQL? Moje dotazy, ktere jsem pouzival v MySQL vubec ve
> FB nefunguji a po upravach (zameny ruznych typu apostrofu atd.) se mi podari
> je spustit tak vraci uplne jine vysledky. Je normalni aby mi INNER JOIN
> vracel vic zaznamu nez LEFT JOIN!!?!! Nechapu to. INNER JOIN mi vrati cca
> 3000 zaznamu - dokonce spravne, LEFT JOIN vrati 0 zaznamu a RIGHT JOIN trva
> strasne dlouho a nakonec vrati taky 0 zaznamu. Tak nevim. Je tohle SQL-92?

Jak zapisujes ty dotazy ? Mimochodem FB je vic SQL-92 kompatibilni
nez MySQL.
 
> 2. Nainstaloval jsem si FBServer 1.5 a chtel bych ne nej pristoupit pres FB
> ODBC driver, ale pri nastavovani toho DSN mi to umozni tak akorat zadat
> cestu k GDB souboru, ale to se mi nelibi, myslel jsem, ze pod slovem SQL
> server si muzu predstavit neco jineho, tohle mi pripada spis jako souborova
> databaze. Vubec nevim jak to budu jako nastavovat v LAN. To budu sdilet ten
> soubor? Nebo delam neco spatne? co?

FB neni souborova databaze, a vubec by ti priteli neuskodilo precist
si alespon zakladni dokumentaci, napriklad Firebird QuickStart Guide,
nebo alespon nektery z dokumentu primo popisujici praci s
Apache+PHP+Firebird.

Pristup k vzdalenemu serveru se definuje zapsanim jmena nebo IP
serveru pred cestu nebo alias databaze, oddeleny dvojteckou (pro
protokol TCP/IP). Connect string tedy bude vypadat napr.:

myserver:/var/database/mydb.fdb

> 3. Existuje neco na prepumpovani dat z MySQL na FB? Ja jsem to resil hroznym
> zpusobem pres Access, protoze FB neumi SQL, ktery produkuje MySQL.

Porozhlidni se na www.ibphoenix.com v sekci Contributed download.

> Budu vdecny za nejake reakce, protoze to co ctu na webu se dost lisi od
> situace na mym komplu. Zda se mi, ze FB je souborova databaze stejne jako
> treba Access s tim roydilem, ze Access umi aspon trochu SQL. V cem je
> problem?

Problem je mezi klavesnici a zidli.

S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase


Odpovedá: Martin Pisarik

12. 5. 2004 18:14


> 1. Jak je to ve FB s SQL? Moje dotazy, ktere jsem pouzival v MySQL vubec
ve
> FB nefunguji a po upravach (zameny ruznych typu apostrofu atd.) se mi
podari
> je spustit tak vraci uplne jine vysledky. Je normalni aby mi INNER JOIN
> vracel vic zaznamu nez LEFT JOIN!!?!! Nechapu to. INNER JOIN mi vrati cca
> 3000 zaznamu - dokonce spravne, LEFT JOIN vrati 0 zaznamu a RIGHT JOIN
trva
> strasne dlouho a nakonec vrati taky 0 zaznamu. Tak nevim. Je tohle SQL-92?

Jak zapisujes ty dotazy ? Mimochodem FB je vic SQL-92 kompatibilni
nez MySQL.

Cetl jsem, o FB samou chvalu a proto s nim ted experimentuji.
Doufal jsem, ze to nekoho vyprovokuje   Dotazy zapisuju pomoci IBEasy+ co
jsem nekde stahl. Problem je tento:

SELECT s.id FROM s
LEFT JOIN p
ON p.s_ID=s.id

mi vrati chybovou hlasku "no current record for fetch operation". pokud
vynecham LEFT pred joinem, tak se to povede, ja chci ale left join!

> 2. Nainstaloval jsem si FBServer 1.5 a chtel bych ne nej pristoupit pres
FB
> ODBC driver, ale pri nastavovani toho DSN mi to umozni tak akorat zadat
> cestu k GDB souboru, ale to se mi nelibi, myslel jsem, ze pod slovem SQL
> server si muzu predstavit neco jineho, tohle mi pripada spis jako
souborova
> databaze. Vubec nevim jak to budu jako nastavovat v LAN. To budu sdilet
ten
> soubor? Nebo delam neco spatne? co?

FB neni souborova databaze, a vubec by ti priteli neuskodilo precist
si alespon zakladni dokumentaci, napriklad Firebird QuickStart Guide,
nebo alespon nektery z dokumentu primo popisujici praci s
Apache+PHP+Firebird.

Pristup k vzdalenemu serveru se definuje zapsanim jmena nebo IP
serveru pred cestu nebo alias databaze, oddeleny dvojteckou (pro
protokol TCP/IP). Connect string tedy bude vypadat napr.:

myserver:/var/database/mydb.fdb

No neco uz jsem o tom cetl,jen jsem myslel, ze nastavim nazev pocitace,
nazev databaze, usera, heslo, popripade port a misto toho nastavuju cestu k
souboru, tak nevim...


Problem je mezi klavesnici a zidli.

Problem je v tom, ze nefunguje LEFT JOIN. Puvodne jsem si myslel, ze to
vrati prazdny dataset, ale pak jsem zjistil, ze to haze vyse zminenou
chybovou hlasku. Tato hlaska je na webu ventilovana docela hodne, ale
bohuzel u jinych veci nez u selectu, takze reseni nemam.
Tu databazi muzu poslat, pokud si to budes chtit zkusit.

Dik.


Odpovedá: Ladislav Novak

12. 5. 2004 21:15

Martin Pisarik napsal(a):

>No neco uz jsem o tom cetl,jen jsem myslel, ze nastavim nazev pocitace,
>nazev databaze, usera, heslo, popripade port a misto toho nastavuju cestu k
>souboru, tak nevim...
>
Ahoj,

tedy vubec si nemyslim, ze bys o tom uz neco cetl...   Ja
jsem tady za naprosteho zacatecnika a spis jen pozoruju...
Nicmene tohle si muzu dovolit napsat s citym svedomim..

Mne do tezkych zacatku moc pomohla knizka P. Cisare
'Podrobna prirucka
Interbase/Firebird'

Lada


Odpovedá: Karel Rys

13. 5. 2004 7:19

Martin Pisarik dne 12 May 2004 v 19:09:

> SELECT s.id FROM s
> LEFT JOIN p
> ON p.s_ID=s.id
>
> mi vrati chybovou hlasku "no current record for fetch operation".
> pokud vynecham LEFT pred joinem, tak se to povede, ja chci ale left
> join!

Co LEFT OUTER JOIN?

Nejcasteji pisu neco jako:

SELECT s.id
FROM Tabulka1 s
LEFT OUTER JOIN Tabulka2 p ON (p.s_ID=s.id)


Karel Rys


Odpovedá: Zbysek Hlinka

13. 5. 2004 7:47

> [mailto:delphi-l-owner@clexpert.cz] On Behalf Of Martin Pisarik
> Sent: Wednesday, May 12, 2004 7:10 PM
>
> > 1. Jak je to ve FB s SQL? Moje dotazy, ktere jsem pouzival v MySQL ...

Podle otazek, jakym zpusobem jsi je napsal, bych usuzoval, ze MySQL je pekna
tragedie...  

> Cetl jsem, o FB samou chvalu a proto s nim ted experimentuji.

Existuje jedno prislovi: kdyz vsechny pokusy selzou, je nacase si precist
dokumentaci.

> Doufal jsem, ze to nekoho vyprovokuje   Dotazy zapisuju
> pomoci IBEasy+ co jsem nekde stahl. Problem je tento:
>
> SELECT s.id FROM s
> LEFT JOIN p
> ON p.s_ID=s.id

A to je co, za select? Join je ti k nicemu, kdyz z nej nepotrebujes zadnou
polozku. Takze bych ocekaval aspon neco takoveho:
SELECT s.id, p.name ...

Jinak left funguje tak, ze dosadi hodnoty z p do radku, ktere byly vyhledany
v s. Right funguje v podstate obracene. Nejlepe je si to vyzkouset na
nejakem selectu, ktery ti vrati vysledky pro oba pripady, tam nejlepe
poznas, jaky je mezi tim rozdil.

Je pritom mozne, ze FB vyzaduje dalsi syntaxi, napriklad LEFT INNER JOIN
nebo neco podobneho. Najdes v dokumentaci.

> Problem je v tom, ze nefunguje LEFT JOIN.

Proc by nemel fungovat? Zkus uplatnit vyse uvedene prislovi.  

S pozdravem

Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282


Odpovedá: petr palicka

13. 5. 2004 11:16

> SELECT s.id FROM s
> LEFT JOIN p
> ON p.s_ID=s.id
>
> mi vrati chybovou hlasku "no current record for fetch operation". pokud
> vynecham LEFT pred joinem, tak se to povede, ja chci ale left join!

pokud p k nicemu nepotrebujes, vynech ten join uplne.
pokud by to melo byt neco jako:

select
   s.id, p.neco
from
   s
   left join p on p.s_id = s.id

pak vez, ze tato konstrukce _spolehlive_ funguje, byt
podle nazvu polozek si dovolim tipovat ze spravnejsi
by byl right nebo inner join.


> myserver:/var/database/mydb.fdb
>
> No neco uz jsem o tom cetl,jen jsem myslel, ze nastavim nazev pocitace,
> nazev databaze, usera, heslo, popripade port a misto toho nastavuju cestu k
> souboru, tak nevim...

samozrejme. sdelujes serveru "myserver" kde na svem (tedy jeho  
disku najde databazi. v nejakem souboru da databaze byt ulozena musi.

> Tu databazi muzu poslat, pokud si to budes chtit zkusit.

udelej zalohu a pokud to nema vic jak 2MB,
tak mi to posli na soukromy email (viz hlavicku emailu)

> Dik.

pohoda, kazdej potrebuje obcas postrcit spravnym smerem  
jinak knihu Pavla Cisare si urcite kup (pujc) a pecti.

Peca